package com.ms.qw.jsf.datamodel;

import com.ms.qw.application.mappers.DistritoAdjudicadoMapper;
import com.ms.qw.client.dto.ColegioDTO;
import com.ms.qw.client.dto.ColegioFlt;
import com.ms.qw.client.dto.DistritoAdjudicadoDTO;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SelectableDataModel;
import org.primefaces.model.SortOrder;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class LazyResumenDistritoAdjudicadoModel
        extends LazyDataModel<DistritoAdjudicadoDTO>
        {

    DistritoAdjudicadoMapper distritoAdjudicadoMapper;
    private ColegioFlt colegioFlt;
    private List<DistritoAdjudicadoDTO> resumenList = new ArrayList<DistritoAdjudicadoDTO>();



    public LazyResumenDistritoAdjudicadoModel(DistritoAdjudicadoMapper mapper, ColegioFlt colegioFlt) {
        this.distritoAdjudicadoMapper = mapper;
        this.colegioFlt=colegioFlt;
    }


    public void cleanInfo(){
        resumenList=new ArrayList<DistritoAdjudicadoDTO>();
    }

    private Integer calcularTamanioTotal() {
        Integer numeroNotificaciones = distritoAdjudicadoMapper.total(colegioFlt);
        return numeroNotificaciones < 500 ? numeroNotificaciones:500;
    }

    @Override
    public List<DistritoAdjudicadoDTO> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {

        Integer totalSize= calcularTamanioTotal();
        int start = first;
        int end = first + pageSize;

        if(end> totalSize){
            end=totalSize;
        }
        colegioFlt.setStart(start);
        colegioFlt.setEnd(end);
        resumenList = distritoAdjudicadoMapper.find(colegioFlt);
        setRowCount(totalSize);
        return resumenList;
    }


    @Override
    public DistritoAdjudicadoDTO getRowData(String rowKey) {
        System.out.println("buscando "+rowKey);
        for(DistritoAdjudicadoDTO n : resumenList) {

            if(n.getCodigoDistritoInt().equals(Integer.valueOf(rowKey))){
                System.out.println(n.getCodigoDistritoInt());
                return n;
            }
        }

        return null;
    }

    @Override
    public Object getRowKey(DistritoAdjudicadoDTO n) {
        System.out.println(n.getCodigoDistritoInt());
        return n.getCodigoDistritoInt();
    }

    @Override
    public void setRowIndex(int rowIndex) {
        if (rowIndex == -1 || getPageSize() == 0) {
            super.setRowIndex(-1);
        } else{

            super.setRowIndex(rowIndex % getPageSize());
        }

    }

}
